package com.sqm.a4;

import edu.princeton.cs.algs4.StdIn;

/**
 * @Author sun.qingmeng
 * @Date 2021/2/10 10:34 下午
 * 编写一个静态方法 lg()，接受一个整型参数 N，返回不大于 log2N 的最大整数。不要使用 Math 库。
 *
 * 解决思路1：从x = 0计算直到它的2次方大于等于N
 * 解决思路2：将N右移(除以2)直到他等于0，燃油
 */
public class Ex_1_1_14 {
    private static int lg(int n) {
        int shiftRightCount = 0;
        do {
            n >>= 1;
            shiftRightCount++;
        } while (n != 0);
        return shiftRightCount - 1;
    }

    public static void main(String[] args) {
        int N = StdIn.readInt();
        int x = 0;
        for (x = 0; x * x <= N; x++) {
        }
        System.out.println(x - 1);
        System.out.println(lg(N));
    }
}
